/**
 * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
 * 
 * 项目名：	cards-web
 * 文件名：	WxComponentContext.java
 * 模块说明：	
 * 修改历史：
 * 2017年4月12日 - Debenson - 创建。
 */
package com.alex.wechat.component.config;

import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.ContextHolderUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alex.wechat.component.account.entity.WxComponentAccountEntity;
import com.alex.wechat.component.account.service.WxComponentAccountServiceI;

/**
 * 开放平台环境。
 * 
 * @author Debenson
 * @since 0.1
 */
public class WxComponentContext {
  static final Logger logger = LoggerFactory.getLogger(WxComponentContext.class);

  /** 开放平台appid */
  public static final String KEY_WXCOMPONENT_ID = "__WX_COMPONENT_APP_ID__";

  /**
   * 设置第三方开放平台Appid
   * 
   * @param appId
   */
  public static void setAppId(String appId) {
    ContextHolderUtils.getSession().setAttribute(KEY_WXCOMPONENT_ID, appId);
  }

  /**
   * 取得第三方开放平台 Appid
   * 
   * @return
   */
  public static String getAppId() {
    WxComponentAccountEntity account = getComponentAccount();
    if (account == null) {
      return null;
    } else {
      return account.getAppId();
    }
  }

  /**
   * 取得当前会话的微信账户信息。
   * 
   * @return
   */
  public static WxComponentAccountEntity getComponentAccount() {
    WxComponentAccountServiceI service = ApplicationContextUtil
        .getBean(WxComponentAccountServiceI.class);

    // 通过Appid查找
    String appId = (String) ContextHolderUtils.getSession().getAttribute(KEY_WXCOMPONENT_ID);
    if (StringUtils.isNotBlank(appId)) {
      return service.findUniqueByProperty(WxComponentAccountEntity.class, "appId", appId);
    }
    return null;
  }

}
